package main

import "fmt"

const Pi float64 = 3.14159265358979323846 // 单行常量声明

// 以const代码块形式声明常量
const (
	size    int64 = 4096
	i, j, s       = 13, 14, "bar" // 单行声明多个常量
)

// Go 常量的类型只局限于 Go基本数据类型, 包括数值类型、字符串类型，以及只有两个取值(true/false)的布尔类型

// 即使两个类型拥有着相同的底层类型，但它们人仍然是不同的类型, 不可以被相互比较或混在一个表达式中进行运算

type myInt int

// const n myInt = 13
// const m int = n + 5 // 编译器报错: cannot use n + 5 (type myInt) as type int in const initializer.

const n = 13 // 无类型常量(Untyped Constant)

func main() {
	var a myInt = 5
	fmt.Println(a + n) // 输出: 18
}

const (
	a = iota + 1 // 1, iota = 0
	b            // 2, iota = 1
	c            // 3, iota = 2
)

const (
	i1 = iota << 1 // 0, iota = 0
	j1             // 2, iota = 1
	k1             // 4, iota = 2
)
